package com.wxzhou.wangzhuan.config;

import jakarta.enterprise.context.ApplicationScoped;
import org.eclipse.microprofile.config.inject.ConfigProperty;
import org.jboss.logging.Logger;

/**
 * 缓存配置类
 * 管理Redis和Caffeine的降级策略
 */
@ApplicationScoped
public class CacheConfig {

    private static final Logger LOG = Logger.getLogger(CacheConfig.class);

    @ConfigProperty(name = "quarkus.cache.redis.enabled", defaultValue = "true")
    boolean redisCacheEnabled;

    @ConfigProperty(name = "quarkus.cache.caffeine.enabled", defaultValue = "true")
    boolean caffeineCacheEnabled;

    /**
     * 初始化缓存配置
     */
    public void initializeCache() {
        LOG.info("=== 缓存配置初始化 ===");
        LOG.info("Redis缓存启用状态: " + redisCacheEnabled);
        LOG.info("Caffeine缓存启用状态: " + caffeineCacheEnabled);

        // 如果Redis不可用，记录降级信息
        if (!redisCacheEnabled && caffeineCacheEnabled) {
            LOG.warn("Redis缓存已禁用，将使用Caffeine内存缓存作为降级方案");
        } else if (redisCacheEnabled) {
            LOG.info("缓存策略: 使用Redis分布式缓存");
        } else {
            LOG.info("缓存策略: 使用Caffeine内存缓存");
        }
    }
}